package com.gxa.weixing.portal.service;

import com.gxa.weixing.core.exception.BusinessException;
import com.gxa.weixing.core.pojo.User;
import com.gxa.weixing.core.service.BaseService;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Author ChenJ
 * @date 2022/01/05 18:14
 **/
public interface UserService extends BaseService<User> {


    /**
     * 绑定安全手机号
     * @param phone 安全手机号
     * @param code 验证码
     * @param id 用户编号
     * @throws BusinessException
     */
    void bangDing(String phone,String code,Long id) throws BusinessException;

    /**
     * 获取我的首页信息
     * @param id
     * @return
     */
    Map<String,Object> getMy(Long id);

    /**
     * 获取用户的金币记录
     * @param id 用户编号
     * @return
     */
    Map<String,Object> getGoldRecord(Long id);

    /**
     * 获取用户的金币兑换记录
     * @param id 用户编号
     * @param status 兑换状态
     * @return
     */
    List<Map<String, Object>> getExchangeRecord(Long id,Integer status);

    /**
     * 用户完成任务领取金币
     * @param id 用户编号
     * @param number 金币数量
     * @return
     */
    void getGold(Long id, BigDecimal number);

    /**
     * 获取用户余额提现记录
     * @param id 用户编号
     * @return
     */
    List<Map<String,Object>> getBalanceLog(Long id);

    /**
     * 根据提现状态获取用户提现记录
     * @param id 用户编号
     * @param status 提现状态
     * @return
     */
    List<Map<String,Object>> getBalanceLogByStatus(Long id,Integer status);

    /**
     * 用户提现
     * @param id 用户编号
     * @param num 提现额度
     * @return
     */
    void withdraw(Long id,BigDecimal num) throws BusinessException;

}
